package facade;

//퍼사드 패턴을 적용한 클래스는 별다른 일이 없다. 
//단지 수행 과정을 method로 묶어둔 것 뿐이다. 
//사실 어찌보면 어댑터 패턴과의 차이를 이해할 수 없다. 
//엄밀히 따지면 어댑터 패턴은 '서로 다른 인터페이스를 이용할 수 있도록 연결'해주는 패턴이고, 
//퍼사드 패턴은 '부분 부분의 서브시스템을 한데 묶어 사용'하는 것 이라볼 수 있다. 
//형식은 비슷할 지언정 애초에 필요 조건이 틀린 것 이다.
  
public class AquariumFacade {  
    private Aquarium aquarium;  
    AquariumDecorate decorate;  
    AquariumWater water;   
    Turtle turtle;  
    // 생성자로 모두 넘겨 받습니다.  
    public AquariumFacade(Aquarium aquarium, AquariumDecorate decorate,   
                     AquariumWater water, Turtle turtle) {  
        this.aquarium = aquarium;  
        this.decorate = decorate;  
        this.water = water;  
        this.turtle = turtle;  
    }  
    // 청소  프로세스  
    public void setWash() {  
        turtle.getTurtle();  
        decorate.getDecorate();  
        water.getWater();  
        aquarium.setWash();  
    }  
    // 청소 후 재 셋팅 프로세스  
    public void setAquarium() {  
        water.setWater();  
        decorate.setDecorate();  
        turtle.insertTurtle();  
    }  
}  
